Any large software product/program is most usually developed by large, numerous and possibly geographically distributed teams of programmers. This presents several challenges. One of the challenges is to ensure that code changes introduced in one component (or part) do not affect the correct execution of other dependent components (or parts). The dependency of such components can be due to referencing a type, or due to consuming data produced by that type. Typically, the dependency between the various components is not known accurately, due to incomplete specifications or due to the specification not being up-to-date.
One approach to this problem is manually trying to identify adverse affects (leading to errors), but this is quite impractical for complex software.
U.S. Pat. No. 5,694,540, issued to Humelsine et al on Dec. 2, 1997, teaches a set of tests to run on a computer program as a regression test that provides an approximation to the level of testing that is achieved by full regression. A modification request is associated with a test case and the files that change due to the modification are recorded. The test cases associated with the files that are modified by the modification are run.
US Patent Publication No. 2003/0018950A1, in the name Sparks et al, published on Jan. 23, 2003, describes an approach where classes are dynamically reloaded if a code change is detected. A developer can see the result of a change after a build/package step.
These known methods provide only a partial solution to predicting adverse effects. There thus remains a need for an automated approach to more completely detecting adverse effects in other program components resulting from code changes.